home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 168_01 / sdb.mem < prev    next >
Text File  |  1985-08-19  |  25KB  |  1,007 lines

  1.  
  2.  
  3.  
  4.  
  5.                        SDB - a Simple Database System
  6.  
  7.                               by David Betz
  8.                             114 Davenport Ave.
  9.                            Manchester, NH 03103
  10.                               (603) 625-4691
  11.  
  12.                         Converted to the IBM/PC by
  13.                               David N. Smith
  14.                             44 Ole Musket Lane
  15.                             Danbury, CT  06810
  16.                               (203) 748-5934
  17.  
  18.  
  19.         1.0  INTRODUCTION
  20.  
  21.         SDB is a simple database manager for small systems.  It  was
  22.         developed  to  provide  a relatively low overhead system for
  23.         storing data  on  machines  with  limited  disk  and  memory
  24.         resources.   The current version runs on a PDT-11/150 with 2
  25.         RX01 floppy disk drives and 60K bytes of  memory  under  the
  26.         RT-11 operating system.  (it also runs on the VAX under VMS)
  27.  
  28.         SDB was originally intended  to  be  a  relational  database
  29.         system, so many of the terms used in describing it are taken
  30.         from the relational database literature.  Within the context
  31.         of SDB the user can safely make the following associations:
  32.  
  33.              1.  RELATION can be taken to mean FILE
  34.  
  35.              2.  TUPLE can be taken to mean RECORD
  36.  
  37.              3.  ATTRIBUTE can be taken to mean FIELD
  38.  
  39.         It should be noted that SDB is not a  relationally  complete
  40.         system.   It  provides  the relational operations of SELECT,
  41.         PROJECT, and JOIN, but does not provide the  set  operations
  42.         of  UNION,  INTERSECTION,  or  DIFFERENCE  as  well  as some
  43.         others.
  44.  
  45.  
  46.         2.0  RELATION FILE FORMATS
  47.  
  48.         SDB maintains a separate file for  each  relation  that  the
  49.         user  creates.  This file contains a header block containing
  50.         the definition of the relation including the names and types
  51.         of  all  of the relation's attributes.  The remainder of the
  52.         file contains fixed length records each containing one tuple
  53.         from the relation.
  54.  
  55.         Tuples can be of three types:
  56.  
  57.              1.  active - tuples that contain actual active data
  58.  
  59.              2.  deleted - tuples that have been deleted
  60.  
  61.              3.  unused - tuples that haven't been used yet
  62.  
  63.         SDB - a Simple Database System                        Page 2
  64.  
  65.  
  66.         Initially, all tuples are  unused.   When  a  new  tuple  is
  67.         stored  into  a  relation,  the  first unused tuple is found
  68.         (they are all contiguous at the end of the  relation  file).
  69.         The new tuple is stored as an active tuple.
  70.  
  71.         When a tuple is deleted, it is marked as  such.   The  space
  72.         previously  allocated  to  the  deleted tuple is left unused
  73.         until the relation is compressed.
  74.  
  75.         It is possible that when attempting to store a new tuple, no
  76.         unused  tuple can be found even though the relation contains
  77.         fewer than the maximum active  tuples.   This  happens  when
  78.         tuples  have  been  deleted since the time the relation file
  79.         was last compressed.
  80.  
  81.         The compress function  allows  all  of  the  space  lost  by
  82.         deleting tuples to be regained.  It does this by copying all
  83.         of the active tuples as far backward in the file as possible
  84.         leaving  all  of  the  available space toward the end of the
  85.         file.
  86.  
  87.  
  88.  
  89.         3.0  SELECTION EXPRESSIONS
  90.  
  91.         A selection expression specifies a set of tuples over  which
  92.         some  SDB  operation  is  to  be executed.  The syntax for a
  93.         selection expression is:
  94.  
  95.         <rse>           ::= <rnames> [ where <boolean> ]
  96.         <rnames>        ::= <rname> [ , <rname> ] ...
  97.         <rname>         ::= <relation-name> [ <alias> ]
  98.  
  99.         When a single relation name  is  specified  in  a  selection
  100.         expression,  each  tuple  within  that  relation  becomes  a
  101.         candidate for selection.
  102.  
  103.         When more than one relation name is  specified,  the  tuples
  104.         are  formed  by  taking  the  cross product of all specified
  105.         relations.  If a relation is to be crossed with  itself,  an
  106.         alias must be given to one or both of the occurances of that
  107.         relation name in the selection expression.  This allows  SDB
  108.         to determine which relation occurance is being refered to in
  109.         the boolean part of the selection expression.
  110.  
  111.         After the set of candidate tuples is determined, the boolean
  112.         expression  is evaluated for each candidate.  The candidates
  113.         for which the boolean expression evaluates  to  TRUE  become
  114.         the selected tuples.
  115.  
  116.         SDB - a Simple Database System                        Page 3
  117.  
  118.  
  119.         4.0  INITIALIZATION FILE AND COMMAND FILES
  120.  
  121.         When SDB is first run,  it  attempts  to  read  and  process
  122.         commands  from  a  file  named "SDB.INI".  This file usually
  123.         contains macro definitions, but can contain  any  valid  SDB
  124.         command.   In  addition,  it  is possible to process command
  125.         files from within SDB.   This  is  done  by  typing  an  '@'
  126.         followed by the command file name after the SDB prompt.
  127.  
  128.  
  129.  
  130.         5.0  FILE NAMES
  131.  
  132.         Whenever a file name is allowed in the syntax for a command,
  133.         it  is  possible  to  use  either  an identifier or a quoted
  134.         string.  An identifier is interpreted as the file name and a
  135.         string  is  interpreted  as  a full file specification.  The
  136.         string form allows for the  specification  of  an  alternate
  137.         device or extension.
  138.  
  139.  
  140.  
  141.         6.0  FORM DEFINITION FILES
  142.  
  143.         A form  definition  file  contains  a  template  into  which
  144.         attribute  values  are substituted during a print operation.
  145.         There are two types of information that can be included in a
  146.         form definition:
  147.  
  148.              1.  Literal text
  149.  
  150.              2.  Attribute references
  151.  
  152.         Attribute references are indicated by placing  the  name  of
  153.         the  attribute  being  referenced  between  a  pair of angle
  154.         brackets.  Literal text is anything that is not enclosed  in
  155.         angle brackets.
  156.  
  157.         SDB - a Simple Database System                        Page 4
  158.  
  159.  
  160.         Example:
  161.         ________
  162.  
  163.         print using test amount,category from checks;
  164.  
  165.         Where test.frm contains:
  166.  
  167.         Amount: <amount>
  168.         Category: <category>
  169.  
  170.  
  171.         7.0  ALIASES FOR RELATIONS AND ATTRIBUTES
  172.  
  173.         When a relation or attribute name is specified  in  a  print
  174.         statement,  it  is possible to provide an alternate name for
  175.         that relation or attribute.  This is useful  for  relations,
  176.         when  it  is  necessary to join a relation to itself.  It is
  177.         useful for attributes when it is  desired  that  the  column
  178.         headers  in  a  table be different from the actual attribute
  179.         names.  Also, alternate  attribute  names  can  be  used  in
  180.         references  to that attribute in the where clause as well as
  181.         in a  form  definition  file.   The  syntax  for  specifying
  182.         aliases is:
  183.  
  184.             <name> <alias>
  185.  
  186.  
  187.         Example:
  188.         ________
  189.  
  190.         print using test amount a,category c from checks;
  191.  
  192.         Where test.frm contains:
  193.  
  194.         Amount: <a>
  195.         Category: <c>
  196.  
  197.         SDB - a Simple Database System                        Page 5
  198.  
  199.  
  200.         8.0  BOOLEAN EXPRESSIONS
  201.  
  202.         The syntax for boolean expressions:
  203.  
  204.         <expr>          ::= <land> [ '|' <land> ]
  205.         <land>          ::= <relat> [ '&' <relat> ]
  206.         <relat>         ::= <primary> [ <relop> <primary> ]
  207.         <primary>       ::= <term> [ <addop> <term> ]
  208.         <term>          ::= <unary> [ <mulop> <unary> ]
  209.         <unary>         ::= <factor> | <unop> <unary>
  210.         <factor>        ::= <operand> | '(' <expr> ')'
  211.         <operand>       ::= <number> | <string> | <attribute>
  212.         <attribute>     ::= [ <rname> . ] <aname>
  213.         <relop>         ::= '=